# app/models/system/menu.py
from sqlalchemy import BigInteger, Column, String, Integer, DateTime, CHAR
from application.models.base import Base


class SysMenu(Base):
    __tablename__ = "sys_menu"

    # 菜单ID
    menu_id = Column(BigInteger, primary_key=True, comment="菜单ID")

    # 菜单名称
    menu_name = Column(String(50), nullable=False, comment="菜单名称")

    # 父菜单ID
    parent_id = Column(BigInteger, nullable=True, default=0, comment="父菜单ID")

    # 显示顺序
    order_num = Column(Integer, nullable=True, default=0, comment="显示顺序")

    # 路由地址
    path = Column(String(200), nullable=True, default="", comment="路由地址")

    # 组件路径
    component = Column(String(255), nullable=True, comment="组件路径")

    # 路由参数
    query_param = Column(String(255), nullable=True, comment="路由参数")

    # 是否为外链（0是 1否）
    is_frame = Column(
        Integer, nullable=True, default=1, comment="是否为外链（0是 1否）"
    )

    # 是否缓存（0缓存 1不缓存）
    is_cache = Column(
        Integer, nullable=True, default=0, comment="是否缓存（0缓存 1不缓存）"
    )

    # 菜单类型（M目录 C菜单 F按钮）
    menu_type = Column(
        CHAR(1), nullable=True, default="", comment="菜单类型（M目录 C菜单 F按钮）"
    )

    # 显示状态（0显示 1隐藏）
    visible = Column(
        CHAR(1), nullable=True, default="0", comment="显示状态（0显示 1隐藏）"
    )

    # 菜单状态（0正常 1停用）
    status = Column(
        CHAR(1), nullable=True, default="0", comment="菜单状态（0正常 1停用）"
    )

    # 权限标识
    perms = Column(String(100), nullable=True, comment="权限标识")

    # 菜单图标
    icon = Column(String(100), nullable=True, default="#", comment="菜单图标")

    # 备注
    remark = Column(String(500), nullable=True, default="", comment="备注")
